package cn.iocoder.yudao.module.system.controller.admin.wishlist.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 用户志愿表创建 Request VO
 */
@Schema(description = "管理后台 - 用户志愿表创建 Request VO")
@Data
public class UserWishListCreateReqVO {

    @Schema(description = "招生省份", example = "北京")
    private String provinceName;

    @Schema(description = "高校唯一ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "uuid-123")
    @NotBlank(message = "高校唯一ID不能为空")
    private String schoolUuid;

    @Schema(description = "高校名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "北京大学")
    @NotBlank(message = "高校名称不能为空")
    private String schoolName;

    @Schema(description = "专业名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "计算机科学与技术")
    @NotBlank(message = "专业名称不能为空")
    private String majorName;

    @Schema(description = "专业代码", example = "080901")
    private Integer majorCode;

    @Schema(description = "录取年份", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024")
    @NotNull(message = "录取年份不能为空")
    private Integer year;

    @Schema(description = "最高分", example = "680")
    private String highScore;

    @Schema(description = "平均分", example = "670")
    private String averageScore;

    @Schema(description = "最低分", example = "660")
    private String lowestScore;

    @Schema(description = "最低位次", example = "1000")
    private String lowestSection;

    @Schema(description = "录取批次", example = "本科一批")
    private String batchName;

    @Schema(description = "专业类型", example = "物理类")
    private String typeName;

    @Schema(description = "专业分数", example = "0")
    private String proScore;

    @Schema(description = "选科要求", example = "物理+化学")
    private String subjectSelection;

    @Schema(description = "专业标准代码", example = "0809")
    private String majorStandardCode;

    @Schema(description = "志愿类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "rush", 
            allowableValues = {"rush", "stable", "safe"})
    @NotBlank(message = "志愿类型不能为空")
    private String wishType;

    @Schema(description = "志愿顺序（在同类型中的排序）", example = "1")
    private Integer wishOrder;

    @Schema(description = "备注信息", example = "这是我的第一志愿")
    private String remark;

    @Schema(description = "招生计划信息（JSON格式）", example = "{\"year\":2024,\"enrollmentNumbers\":50}")
    private String enrollmentPlan;

    @Schema(description = "关联的用户成绩记录ID", example = "1")
    private Long userScoreId;

    // ========== 用户基本信息字段（用于检测信息变更） ==========

    @Schema(description = "用户当前省份", example = "北京")
    private String userProvince;

    @Schema(description = "用户当前总分", example = "650")
    private Integer userTotalScore;

    @Schema(description = "用户当前选科", example = "物理+化学+生物")
    private String userSubjectSelection;

    @Schema(description = "用户当前年份", example = "2024")
    private Integer userYear;

}
